La Programación con Restricciones (Constraint Programming) \cite{HCP} es un paradigma de programación 
muy potente para la resolución de problemas de búsqueda y optimización
combinatoria.

Basado en técnicas de Inteligencia Artificial, Ciencias de la Computación e Investigación operativa, 
su principal característica radica en su naturaleza declarativa, siendo el usuario quien 
``declara'' que restricciones debe cumplir un conjunto de variables de un problema concreto
para que se considere una solución válida del mismo.